AWS Directory Serviceを利用したTableau Serverクラスタの構築
はじめに
Tableau Serverを使うとTableauでの分析結果を複数人で共有できるようになります。 利用者が少ないうちはサーバの負荷も低いですが、例えば各店舗にiPadを配りアプリからTableau Serverにアクセスするといった利用方法の場合、サーバに大きな負荷がかかります。
スケールアップでは負荷に対応できなくなった場合、Tableau Serverは複数のノードからなるクラスタを作り、各ノードに負荷を分散させることができます。 クラスタの場合、ノード間でユーザ情報を共有するためにActive Directoryが必要です。今回はActive Directoryの代わりにAWS Directory Serviceを利用し、Tableau Serverクラスタを構築してみました。
手順
クラスタは最小2台から、つまりTableau Primary Server × 1台、Tableau Worker Server × 1台で構築できますが、この場合、いずれか1台が停止するとクラスタ全体が停止してしまいます。 なので、Tableauが推奨する最小構成である、Primary × 1台、Worker × 2台で構築します。
AWS Directory Serviceも含めた最終的な構成は下記のようになります。 次の手順で構築していきます。
- AWS Directory ServiceによるDirectoryの作成
- Tableau Server用ユーザの作成
- Tableau Serverクラスタの構築
- Tableau Serverへのユーザ同期
- ロードバランサの追加
AWS Directory Serviceの構築
Directory ServiceのマネジメントコンソールからDirectoryを作成します。 Directory Typeは「Simple AD」を選択してください。 今回は、
- Directory DNS: tableau.local
- NetBIOS Name: tableau
としました。 出来ました。自前でActive Directoryを構築する場合と比べると簡単ですね。
Tableau Serverを利用するユーザの作成
次にユーザを作成します。 AWS Directory Service自体にはドメイン管理の機能はないため、ドメイン内のWindows Serverから管理ツールを利用してユーザを作成します。
Windows Server 2008 R2起動
現在のところ、Windows Server 2012 R2のツールではユーザを追加出来ないためWindows Server 2008 R2を起動します。
詳細設定画面の「Domain join directory」で、先ほどDirectory Serviceで作成したDirecotryを選択すると、ドメインに参加した状態でサーバが起動されます。 ユーザ名:{ドメイン名}\Administrator、パスワード:{Directory作成時に指定したパスワード}でリモートデスクトップログインしサーバ情報を確認してみます。ちゃんとドメインに参加していますね。
グループとユーザの作成
ドメイン管理用のツールをインストールします。 Server ManagerからAdd Featuresを選択し、「AD DS and AD LDS Tools」をインストールしてください。
「Active Directory Users and Computers」を使ってTableau Serverの利用ユーザを作成します。ここで作ったユーザ情報は、Tableau Serverクラスタ構築後、Tableauに同期します。 グループ単位での同期が可能なので、管理しやすい様に専用のグループを作成し、ユーザはそのグループに所属させます。 今回はtabadmin、tabuser01というユーザを作成し、TableauUsersグループに所属させました。
Tableau Serverクラスタ構築
これでTableau Serverクラスタを構築する準備が整いました。 Tableauのドキュメントに沿って構築していきましょう。
下記の記事にある様にTableau9.0からサーバのスペックチェックが行われる様になりました。 AWS x Tableau 9 アップグレード前に知っておく事柄 必要なスペックは下記です。
- CPU: 4コア(物理)以上
- メモリ: 8GB以上
- 空きHDD: 15GB以上
今回は、m4.2xlarge、EBSサイズ50GBのインスタンスを使うことにしました。OSはWindows Server2012 R2を利用します。 「Domain join directory」を指定して、3台同時に起動させます。
Tableau Primary Server
まず、Primaryサーバから構築していきます。
PowerShellで下記コマンドを実行し、Tableau Serverパッケージをダウンロードします。
Invoke-WebRequest https://downloads.tableausoftware.com/tssoftware/TableauServer-64bit.exe -OutFile c:\TableauServer-64bit.exe
Cドライブ直下に保存されたパッケージをダブルクリックし、インストールを開始します。 下記画面まで進みライセンスを登録します。 シングル構成のTableau Serverにはトライアルライセンスが利用できますが、クラスタ構成の場合は正規のライセンスが必要です。 ライセンスの登録が済んだら、サーバの設定を行います。 下記の様に設定してください。
- Server Run As User: Simple ADの管理ユーザ(例: tableau.local\Administrator)
- User Authentification: Use Active Directory
- Active Directory: Simple ADで指定したドメイン名
OKを押すとウィンドウにNot Respondingと表示され反応がなくなることがありますが、しばらくすると正常に設定が終わります。 インストールが終了するとブラウザが起動し、Tableau Serverの管理者の登録を求められます。 ADの管理者ではなく、Tableau Server用に作成したユーザ、今回であればtabadminを利用してください。 サーバ自体の管理権限を持つAD管理ユーザとTableau Serverの管理者は別にしたほうが保守しやすいからです。 無事ログインできました。 サーバステータスを見ると、シングル構成であることを確認できます。
クラスタ化の設定を行う前にWorker2台の準備をしましょう。
Tableau Worker Server
Workerの設定は簡単です。 下記コマンドでパッケージを入手し、インストールを開始してください。
Invoke-WebRequest https://downloads.tableausoftware.com/tssoftware/TableauServerWorker-64bit.exe -OutFile c:\TableauServerWorker-64bit.exe
途中でPrimaryサーバのIPアドレス入力画面が出てくるので、PrimaryサーバのプライベートIPアドレスを入力してください。 最後まで進めばインストール完了です。
クラスタ設定
Primaryサーバに戻り、クラスタの設定を行います。 まず、起動中のTableau Serverを停止します。 アプリケーション一覧から「Stop Tableau Server」を選んでください。 サーバが停止したら、「Configure Tableau Server」を選択し、設定の変更を行います。 設定画面上部にある「Servers」タブを選んでください。 ここで各ノードに処理プロセスを割り当てます。 各プロセスの説明はこちらをご覧ください。 ワークロードに応じたプロセスの推奨割り当てについてはこちらが参考になります。 今回は全ノードに平等にプロセスを割り当てます。 (RepositoryはActiveとStandbyの2つしか指定できないので、Primaryと1台目のWorkerに割り当てています。) 割り当てが終わったら「Genaral」タブに戻り、AD管理者のパスワードを入力し、OKをクリックしてください。 アプリケーション一覧から「Start Tableau Server」を選び、Tableau Serverを起動させます。 ブラウザからサーバステータスを表示すると、各サーバにプロセスが割り当てられていることを確認できます。
ユーザの同期
クラスタは完成したので、Tableauの利用ユーザをTableauに取り込みましょう。
Tableau Serverの管理画面上部の「Users」タブを選んでください。 現在はtabadminだけがユーザです。 「Add Users」から「Active Directory Group」を選択し、作成したグループ名を入力します。 今回の例ではTableauUsersというグループです。 ユーザに付与する権限を選択し、インポートします。 しばらくするとTableauUsersグループ内のもう一人のユーザtabuser01が追加されたことが確認できます。
ロードバランサの追加
最後にロードバランサを追加し、ユーザからのアクセスが3つのノードに分散されるようにします。
通常のELB作成なので手順は省略します。 ヘルスチェックのPATHは「/」で大丈夫です。
まとめ
Tableau Serverクラスタを構築しました。
AWS Directory Serviceを利用することにより
- Active Direcotry構築の手間が省ける
- Active Directoryの保守が不要になる
- ドメインに参加した状態のEC2を起動できる
といったメリットがあります。 クラスタ構築の際はぜひ使ってみてください。